﻿//using Microsoft.AspNetCore.Http;
//using Microsoft.Extensions.Configuration;
//using Microsoft.Extensions.Configuration.Json;

//namespace Botok.Utils.Helper
//{
//    public static class AppHelper
//    {
//        static string path = $"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json";

//        static IConfiguration Configuration { get; set; } =
//            new ConfigurationBuilder()
//            .Add(new JsonConfigurationSource { Path = path, Optional = false, ReloadOnChange = true })//这样的话，可以直接读目录里的json文件，而不是 bin 文件夹下的，所以不用修改复制属性
//            .Build();

//        /// <summary>
//        /// 根据路径  configuration["App:Name"];
//        /// </summary>
//        /// <param name="sectionsPath"></param>
//        /// <returns></returns>
//        public static string GetJsonValue(string sectionsPath)
//        {
//            try
//            {
//                return Configuration[sectionsPath];
//            }
//            catch (Exception) { }

//            return "";

//        }

//        /// <summary>
//        /// 根据路径获取数据链接  GetConnectionString["App:Name"];
//        /// </summary>
//        /// <param name="str"></param>
//        /// <returns></returns>
//        public static string GetConnection(string str)
//        {
//            try
//            {
//                return Configuration.GetConnectionString(str);
//            }
//            catch (Exception) { }

//            return "";
//        }

//        /// <summary>
//        /// 封装要操作的字符
//        /// </summary>
//        /// <param name="sections">节点配置</param>
//        /// <returns></returns>
//        public static string app(params string[] sections)
//        {
//            try
//            {
//                if (sections.Any())
//                {
//                    return Configuration[string.Join(":", sections)];
//                }
//            }
//            catch (Exception) { }

//            return "";
//        }

//        /// <summary>
//        /// 递归获取配置信息数组
//        /// </summary>
//        /// <typeparam name="T"></typeparam>
//        /// <param name="sections"></param>
//        /// <returns></returns>
//        public static List<T> app<T>(params string[] sections)
//        {
//            List<T> list = new List<T>();
//            // 引用 Microsoft.Botok.Extensions.Configuration.Binder 包
//            Configuration.Bind(string.Join(":", sections), list);
//            return list;
//        }

//        /// <summary>
//        /// 获取客户Ip
//        /// </summary>
//        /// <param name="context"></param>
//        /// <returns></returns>
//        public static string GetClientUserIp(this IHttpContextAccessor http)
//        {
//            string ip = http.HttpContext?.Connection?.RemoteIpAddress?.MapToIPv4().ToString();
//            //最后判断获取是否成功，并检查IP地址的格式（检查其格式非常重要）
//            if (!string.IsNullOrEmpty(ip) && IsIP(ip))
//            {
//                return ip;
//            }
//            return "127.0.0.1";
//        }

//        /// <summary>
//        /// 检查IP地址格式
//        /// </summary>
//        /// <param name="ip"></param>
//        /// <returns></returns>
//        public static bool IsIP(string ip)
//        {
//            return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
//        }

//    }
//}